import { FormArray, FormControl, FormGroup } from '@angular/forms';

/**
 * 新建表单结构
 * @param data 数据
 * @param form 表单结构，如果传空则创建新的
 */
export function createFormGroup(data: any, form?: any) {
  if (!form) form = new FormGroup({});
  for (let key of Object.keys(data)) {
    let value = data[key];
    let control;
    if (Array.isArray(value)) {
      //数组
      control = createFormArray(value);
    } else if (typeof value === 'object') {
      //对象
      control = createFormGroup(value);
    } else {
      //普通值
      control = new FormControl(value);
    }
    form.addControl(key, control);
  }
  return form;
}

/**
 * 新建表单数组结构
 * @param data 数据
 * @param form 表单数组结构，如果传空则创建新的
 */
function createFormArray(data: any, form?: any) {
  if (!form) form = new FormArray([]);
  for (let datum of data) {
    let control = createFormGroup(datum);
    form.controls.push(control);
  }
  return form;
}
